
# 面向对象-多态
"""
说明 ：
1. 必须具有继承关系。
2. 子类的方法要复写(重写)父类的方法

# 定义
# 父类
class A():
    属性 >=0
    def set_name(name):
        pass

# 子类B ： B(A) ,代表B类继承了A类
class B(A)：
    def set_name(name,age)
        pass

class C(A):
    pass

作用 ：需求的多变

# 开闭原则 ：
1. 对调用处进行关闭 ： 关闭修改的需求
2. 对实现者来说进行开放 ： 可以进行需求变更 ，从而保存代码的扩展性

"""


class Test():

    # 在父类中的方法尽量保持不变，
    lst = []

    def __init__(self):
        self.mod_data = ['登录','注册','购物车','支付']

    # 设置模块
    def set_mod(self,mod_name):
        self.mod_data.append(mod_name)

    # 查看模块
    def get_mod(self):
        return self.mod_data

    # 实现搜索
    def search(self,):
        print("需要搜索具体的内容")


class Bugs(Test):

    def search(self):
        self.lst.append({'bug_id':1,'bug_title':'这是一条bug'})
        return self.lst


class Cases(Test):
    def search(self,):
        self.lst.append({'case_id':10,'case_title':'这是一条测试用例'})
        return self.lst


# 新增一个需求
class Report(Test):
    def search(self,):
        return [{'report_id':10,'report_title':'这是一条测试报告'}]

# 实现一个接口函数
def search_data(test):
    result = test.search()
    return result


print("文件模块名:",__name__)

if __name__ == '__main__':

    # 查询测试用例的数据
    print(search_data(Cases()))

    # 查询bug的数据
    print(search_data(Bugs()))

    # 查询测试报告
    print(search_data(Report()))